import { Elysia } from 'elysia';
import {
  getTags,
  getTagById,
  createTag,
  updateTag,
  deleteTag,
  batchDeleteTags,
  getTagStats
} from '../controllers/tagController';
import { guestAccessMiddleware } from '../middleware/auth';

export const tagRoutes = new Elysia({ prefix: '/tags' })
  // 公开接口 - 获取标签列表（前端展示用）
  .get('/', getTags, {
    detail: {
      tags: ['Tags'],
      summary: '获取标签列表',
      description: '获取标签列表，支持分页和筛选'
    }
  })
  
  // 需要登录权限的路由（游客可查看，管理员可编辑）
  .use(guestAccessMiddleware())
  
  .get('/stats', getTagStats, {
    detail: {
      tags: ['Tags'],
      summary: '获取标签统计',
      description: '获取标签统计信息'
    }
  })
  
  .get('/:id', getTagById, {
    detail: {
      tags: ['Tags'],
      summary: '获取标签详情',
      description: '根据ID获取标签详情'
    }
  })
  
  .post('/', createTag, {
    detail: {
      tags: ['Tags'],
      summary: '创建标签',
      description: '创建新标签'
    }
  })
  
  .put('/:id', updateTag, {
    detail: {
      tags: ['Tags'],
      summary: '更新标签',
      description: '更新标签信息'
    }
  })
  
  .delete('/:id', deleteTag, {
    detail: {
      tags: ['Tags'],
      summary: '删除标签',
      description: '删除指定标签'
    }
  })
  
  .post('/batch-delete', batchDeleteTags, {
    detail: {
      tags: ['Tags'],
      summary: '批量删除标签',
      description: '批量删除多个标签'
    }
  });